home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 7 / Night Owl Shareware (NOPV7)(Night Owl Publisher Inc.)(1992).bin / 038a / bash1_12.arj / BASH1-12.TAR / bash-1.12 / builtins / psize.c < prev    next >
C/C++ Source or Header  |  1991-10-30  |  2KB  |  75 lines

  1. /* psize.c - Find pipe size. */
  2.  
  3. /* Copyright (C) 1987, 1991 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GNU Bash, the Bourne Again SHell.
  6.  
  7.    Bash is free software; you can redistribute it and/or modify it
  8.    under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 1, or (at your option)
  10.    any later version.
  11.  
  12.    Bash is distributed in the hope that it will be useful, but WITHOUT
  13.    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  14.    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
  15.    License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with Bash; see the file COPYING.  If not, write to the Free
  19.    Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  20.  
  21. /*  Write output in 128-byte chunks until we get a sigpipe or write gets an
  22.     EPIPE.  Then report how many bytes we wrote.  We assume that this is the
  23.     pipe size. */
  24.  
  25. #include <stdio.h>
  26. #include <sys/types.h>
  27. #include <signal.h>
  28. #include <errno.h>
  29.  
  30. #include "../general.h"
  31. extern int errno;
  32.  
  33. int nw;
  34.  
  35. sighandler
  36. sigpipe (sig)
  37.      int sig;
  38. {
  39.   fprintf (stderr, "%d\n", nw);
  40.   exit (0);
  41. }
  42.  
  43. #if !defined (NeXT)
  44. char *
  45. memset (s, c, n)
  46.      register char *s;
  47.      register int c, n;
  48. {
  49.   register char *p = s;
  50.  
  51.   while (--n >= 0)
  52.     *s++ = c;
  53.  
  54.   return (p);
  55. }
  56. #endif /* !NeXT */
  57.  
  58. main (argc, argv)
  59.      int argc;
  60.      char **argv;
  61. {
  62.   char buf[128];
  63.  
  64.   memset (buf, ' ', 128);
  65.   signal (SIGPIPE, sigpipe);
  66.  
  67.   nw = 0;
  68.   for (;;)
  69.     {
  70.       int n;
  71.       n = write (1, buf, 128);
  72.       nw += n;
  73.     }
  74. }
  75.